package component.untils
{
	public class ComponentItem
	{
		public var textFormatName : String = "";
		public var filterName : String;
		public var txtId : String;
		
		public var itemId : String = "0";
		public var m_parent : ComponentItem;
		public var item : *;
		private var m_childs : Vector.<ComponentItem> = new Vector.<ComponentItem>;
		
		public function ComponentItem()
		{
		}
		
		/**
		 * 设置父项
		 * @param item 
		 */		
		public function set parent(item : ComponentItem) : void
		{			if(item != null)
			{
				item.addChild(this);
			}
			else
			{
				if(m_parent)
				{
					m_parent.removeChild(this);
				}
			}
			
			m_parent = item;
		}
		
		/**
		 * 获取父项
		 * @return  
		 */		
		public function get parent() : ComponentItem
		{
			return m_parent;
		}
		
		/**
		 * 添加子项
		 * @param item 
		 */		
		public function addChild(item : ComponentItem) : void
		{
			m_childs.push(item);
		}
		
		/**
		 * 获取子项列表
		 * @return  
		 */		
		public function get childs() :Vector.<ComponentItem>
		{
			return m_childs;
		}
		
		/**
		 * 删除子项
		 * @param item
		 * @return  
		 */		
		public function removeChild(item : ComponentItem) : ComponentItem
		{
			for(var i:int = 0;i < m_childs.length;i++)
			{
				if(item == m_childs[i])
				{
					m_childs.splice(i,1);
					
					return item;
				}
			}
			
			return null;
		}
		
		/**
		 * 通过item属性删除子项
		 * @param item
		 * @return  
		 */
		public function removeChildByItem(item : *) : *
		{
			for(var i:int = 0;i < m_childs.length;i++)
			{
				if(item == m_childs[i].item)
				{
					m_childs.splice(i,1);
					
					return item;
				}
			}
			
			return null;
		}
		
		public function get label() : String
		{
			return item.name;
		}
	}
}